<?php

namespace Modules\Admin\Http\Controllers;

use Houdunwang\Module\Facade\HdModuleConfig;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Admin\Http\Requests\RoleRequest;
use Spatie\Permission\Models\Role;

class RoleController extends Controller
{
    /**
     * Display a listing of the resource.
     * @return Response
     */
    public function index()
    {
        //获取角色数据
        $roles = Role::where('name','!=',config('hd_module.webmaster'))->paginate(10);
        return view('admin::role.index',compact('roles'));
    }

    /**
     * Show the form for creating a new resource.
     * @return Response
     */
    public function create()
    {
        return view('admin::create');
    }

    /**
     * Store a newly created resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function store(RoleRequest $request)
    {
        $post = $request->all();
        //表格会自动添加当前守卫名称给guard_name字段
        Role::create([
            'name'=>$post['name'],
            'title'=>$post['title'],
        ]);
        //设置闪存信息
        session()->flash('success','角色添加成功！');
        //设置跳转页面
        return redirect()->route('role.index');
    }

    /**
     * Show the specified resource.
     * @return Response
     */
    public function show()
    {
        return view('admin::show');
    }

    /**
     * Show the form for editing the specified resource.
     * @return Response
     */
    public function edit()
    {
        return view('admin::edit');
    }

    /**
     * Update the specified resource in storage.
     * @param  Request $request
     * @return Response
     */
    public function update(RoleRequest $request,$id)
    {
        $post = $request->all();
        $roles = Role::find($id);
        $roles['name']=$post['name'];
        $roles['title']=$post['title'];
        $roles->save();
        //设置闪存信息
        session()->flash('success','角色修改成功！');
        //设置跳转
        return redirect()->route('role.index');
    }

    /**
     * Remove the specified resource from storage.
     * @return Response
     */
    public function destroy($id)
    {
        //用$id找到对的的角色ID
        $role = Role::find($id);
        //判断删除的是不是站长角色
        if($role['name']==config('hd_module.webmaster')){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
        Role::destroy($id);
        //设置闪存信息
        session()->flash('success','角色删除成功！');
        //设置跳转
        return back();
    }

    /**
     * 自己创建一个权限模板
     */
    public function showPermission($roleid){
        if ($roleid==1){
            session()->flash('danger','你没有操作权限！');
            return back();
        }
        //根据roleid获取对应角色数据
        $roles = Role::find($roleid);
        //dd($roles);
        //获取所有模板的权限数据
        $permissions = \HDModule::getPermissionByGuard('admin');
        //dd($permissions);
        //加载展示所有权限模板

        return view('admin::role.permission',compact('permissions','roles'));
    }

    /**
     * 处理权限
     */
    public function permission(Request $request,$roleid){
        //判断post数据中是否存在name值，如果没有，就判定为一个选项都没勾选，就提醒
        if (!$request->input('name')){
            //设置闪存信息，并跳转
            session()->flash('danger','请选择至少一项选项，或者直接退出！');
            return back();
        }
        //给对应角色添加对应权限的数据，应该首先获取到当前角色id所对应的角色
        $role = Role::find($roleid);
        //使用手册中的同步方法为角色添加权限
        $role->syncPermissions($request->input('name'));
        //设置闪存信息
        session()->flash('success','角色权限添加成功！');
        //跳转页面
        return redirect()->route('role.index');
    }
}
